Story2 IP 주소 DNS 서버 조회
1. IP 주소의 기본
HTTP 메세지를 만들면, OS에 의뢰하여 액세스 대상의 웹 서버에게 송신 이때 받는 송신 도메인 주소에서 IP 주소를 조사해야하는 과정이 필요하다.
TCP/IP는 서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크 형성 서브넷은 몇 대의 컴퓨터가 허브에 접속한 것이라고 생각해도 된다.
네트워크 번호 + 호스트 번호 = IP 주소
이동방식
엑세스 대상의 서버에 메세지를 이동할때 데이터는 패킷 형태로 운반
송신측 메세지 → 서브넷 안에 있는 허브가 운반 → 송신측에서 가장 가까운 라우터까지 도착 → 도착하면 가까운 라우터는 보낸 상대를 확인하여 다음 라우터를 판단 → 허브가 운반
7(a) - 32비트의 디지털 데이터, 하지만 이것만으로는 어느 부분이 네트워크 번호인지 호스트번호인지 모름 네트워크를 구축할 때 사용자가 직접 내역을 결정할 수 있음. 그러므로 내역을 나타내는 정보를 필요에 따라 덧붙임 → 넷마스크
넷마스크로 네트워크 번호와 호스트 번호를 나눌 수 있음
IP 주소의 호스트 번호
- 모두 0: 서브넷 자체
- 모두 1: 서브넷에 있는 기기 전체에 패킷을 보내는 브로드캐스트
2 도메인명과 IP 주소 구분하여 사용하는 이유
IP 주소는 기억하기 어려움 → 서버의 이름을 쓰는게 기억하기 쉬움 하지만 이름으로 통신하는 것도 어려움 IP주소는 4바이트면 가능하지만, 도메인명은 적어도 수십 바이트임 따라서 이름을 IP주소로 변환시켜주는 DNS가 등장
3 Socket 라이브러리가 IP 주소를 찾는 기능을 제공한다.
DNS 서버에 조회하여 IP주소로 변경 DNS 클라이언트 = DNS 리졸버, 리졸버에서 IP주소를 조사하는 네임 리졸루션을 실행
리졸버는 Socket 라이브러리 안에 들어있다.
4 리졸버를 이용하여 DNS 서버 조회
리졸버 호출 → DNS에 조회 메세지 보내고 응답 받아옴 응답 메세지에 IP 주소 포함
5 리졸버 내부의 작동
리졸버에서는 DNS 서버로 문의하기 위해 메세지를 만든다. 리졸버 → 프로토콜 스택 호출 실행 네이트워크에 대해 데이터 송, 수신 기능이 없기 때문